1. Field of the Invention
The present invention relates to computer-based information storage systems, and more particularly to apparatus and methods for implementing multi-initiator capabilities in AT Attachment (ATA) drives.
2. Background of the Invention
The increased importance of information technology in business processes has fostered increased demands for data storage systems that combine the features of high storage capacity, high reliability, efficient scalabilty, and cost-effectiveness. Early computer systems relied heavily on direct-attached storage (DAS) systems consisting of one or more disk drives coupled to a system bus. DAS systems were not well adapted to satisfy these demands. More recently, storage area network (SAN) technologies have been implemented. SAN architectures permit organizations to uncouple application servers from data servers to provide storage systems with greater capacity, higher reliability, and higher availability.
In operation, users access a storage system through a file system implemented in a storage system computer, typically referred to as a host computer. The term file system refers to the logical structures and software routines, usually closely tied to the operating system software, that are used to control access to storage in the system. A host computer receives requests from external devices for information stored in the storage system, processes the requests, retrieves the desired information from the storage devices, and transmits the information to the external devices. Many SANs implement a high-speed connection, e.g., a Fibre Channel (FC) connection, between the host computer and the storage devices. This connection is enabled by a Host Bus Adapter (HBA), which provides a communication connection between the host bus (typically a PCI bus) and the FC connection.
SAN systems implement redundancy to enhance the reliability of the system. For example, RAID (Redundant Arrays of Inexpensive Disks) techniques are used to enhance data storage reliability. In addition, in many SAN systems data storage devices (e.g., disk drives) are connected to redundant disk controllers by at least one high-speed data communication link, e.g., a Fibre Channel Arbitrated Loop (FCAL), to provide a network of interconnected storage devices. Further, SAN systems may implement redundant components such as power supplies, cooling modules, disk devices, temperature sensors, audible and/or visible alarms, and RAID and other controllers to increase system reliability. If a component fails, then the redundant component assumes the functions of the failed component so the storage system can continue operating while the failed component is repaired or replaced.
Traditionally, enterprise (and other high-reliability) storage systems have used Small Computer Serial Interface (SCSI) drives, rather than ATA drives. SCSI drives are more expensive than ATA drives, but offer certain advantages over ATA drives. Of particular importance, SCSI drives include the hardware and software capability to support multiple initiators (or hosts). This capability is essential in the high-performance data storage market because multi-initiator support is required to implement operations that support high-reliability such as, for example, failover operations.
The Serial ATA Working Group has developed a Serial ATA specification, accessible on the world wide web at http:\\www.serialata.org, to address certain deficiencies in ATA drive operation. Revision 1.0 of the Serial ATA specification is submitted herewith in an information disclosure statement, and its contents are incorporated by reference. This application assumes a degree of familiarity with the operation of ATA devices, and with the Serial ATA specification.
Serial ATA was designed to be a point-to-point protocol, with no support for multi-initiator operation. Due to the single-host nature of both parallel and serial ATA protocol, several limitations must be overcome to enable more than one host to share access to a single drive if ATA command queuing is to be supported.
For example, if an ATA device has queued commands and then receives a non-queued command, the ATA device aborts the non-queued command and discards all the commands that were in its queue. In addition, the Tags sent to an ATA device must be unique. If a queued command is issued with a Tag that is identical to a Tag for a command already in the device's queue, the ATA device will abort all commands in its queue, along with the last command that was issued. Further, when an ATA device is ready to complete a queued command, it gives no indication of which command is ready to be serviced until after the host responds to the Status[SERV] bit being set via the SERVICE command. This is fine for a single-initiator environment, where there is only one possible source of the command that is pending completion. In a multi-initiator environment, however, the command could have been issued by one of several hosts, and the determination of which host sent the command is dependent on the Tag that is returned by the ATA device in response to the SERVICE command. Therefore, there is no way to determine which host to send the Status[SERV] bit to if the device doesn't indicate the source of the command until after it receives a SERVICE command from the source of the command.
Therefore, there is a need in the art for apparatus and methods for enabling multi-initiator support for serial ATA drives. This technology would be tremendously beneficial to the storage industry, and may be beneficial to other computer-based industries.